home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 02 / 0 / DISK0204.ZIP / FILEOUT.BAS < prev    next >
BASIC Source File  |  1983-02-21  |  6KB  |  93 lines

  1.  
  2. 10 '***************************************************************************
  3. 20 '* The File Output Program        |    FILEOUT.BAS           Version 1.2   *
  4. 30 '*--------------------------------+----------------------------------------*
  5. 40 '*  (C) Copyright 1982            | CREATED 02/28/82     UPDATED 04/12/82  *
  6. 50 '*   Janadon Consumer Software    | Written for the IBM Personal Computer  *
  7. 60 '*   P.O.Box 2462                 |   with one disk drive/48K RAM/IBM PC   *
  8. 70 '*   Fairfax, VA  22031           |   DOS/IBM PC Printer or Epson MX-80 or *
  9. 80 '*   (703) 978-0866 (Voice)       |   MX-80F/T                             *
  10. 85 '*   (703) 978-9592 (Data)        | Author:  Don Withrow                   *
  11. 90 '***************************************************************************
  12. 100 CLEAR:CLS:LINES=0:LINUMBER=1
  13. 110 INPUT"Enter the Filename:  ",FILE$
  14. 120 IF FILE$="quit" OR FILE$="QUIT" THEN END
  15. 130 GOSUB 590
  16. 140 INPUT"Enter `1' for NORMAL print or `2' for COMPRESSED print:  ",X:GOSUB 850
  17. 150 INPUT"Do you want DOUBLESTRIKE letters (Y/N)";Y$
  18. 160 IF LEFT$(Y$,1)="Y" OR LEFT$(Y$,1)="y" THEN DOUBLE=1 ELSE DOUBLE=2
  19. 170 INPUT"How many blanks do you want to pad the left margin with";N
  20. 180 IF LINLEN<1 THEN INPUT"Enter the file line length";LINLEN
  21. 190 INPUT"How many lines per page";PAGLEN
  22. 200 INPUT"Do you want the pages numbered (Y/N)";Y$
  23. 210 IF LEFT$(Y$,1)="Y" OR LEFT$(Y$,1)="y" THEN PAGING=1:INPUT"What is the starting page number";PAGE:ELSE PAGING=2:PAGE=1
  24. 220 INPUT"What page do you wish to start printing";STARTPAGE
  25. 230 INPUT"What page do you wish to end printing";ENDPAGE
  26. 240 INPUT"Do you want line numbers? (Y/N) ",Y$
  27. 250 IF LEFT$(Y$,1)="Y" OR LEFT$(Y$,1)="y" THEN NUMLIN=1:FORMAT$="##### \"+STRING$(LINLEN-2," "):ELSE NUMLIN=2:FORMAT$="\"+STRING$(LINLEN-2," ")
  28. 260 FORMAT1$=FORMAT$+STRING$(LINLEN," ")+"\":FORMAT$=FORMAT$+"\"
  29. 270 INPUT"Do you require pauses to change the paper? (Y/N) ",Y$:IF LEFT$(Y$,1)="Y" OR LEFT$(Y$,1)="y" THEN SHEETS=2 ELSE SHEETS=1
  30. 280 OPEN "I", #1, FILE$
  31. 290 LINE INPUT#1, THELIN$:IF EOF(1) THEN FLAG=1:GOTO 560
  32. 300 IF LEFT$(THELIN$,1)="\" THEN GOTO 440
  33. 310 ON DOUBLE GOTO 320,330
  34. 320 LPRINT CHR$(27) CHR$(71);:GOTO 340
  35. 330 LPRINT CHR$(27) CHR$(72);
  36. 340 IF PAGE=>STARTPAGE AND PAGE <=ENDPAGE THEN LPRINT TAB(N); ELSE 370
  37. 342 IF RIGHT$(THELIN$,1)=CHR$(13) OR RIGHT$(THELIN$,1)=CHR$(10) THEN THELIN$=LEFT$(THELIN$,LEN(THELIN$)-1)
  38. 345 ON NUMLIN GOTO 350,360
  39. 350 LPRINT USING FORMAT$; LINUMBER,THELIN$;:GOTO 370
  40. 360 LPRINT USING FORMAT$; THELIN$;
  41. 370 LINUMBER=LINUMBER+1:LINES=LINES+1:IF LINES=>PAGLEN THEN 380 ELSE 420
  42. 380 LINES=0:ON PAGING GOTO 390,400
  43. 390 IF PAGE=>STARTPAGE AND PAGE <=ENDPAGE THEN LPRINT:LPRINT TAB(INT((LINLEN+N)/2+4)) PAGE:PAGE=PAGE+1:LPRINT CHR$(12):GOTO 410:ELSE PAGE=PAGE+1:GOTO 410
  44. 400 IF PAGE=>STARTPAGE AND PAGE <=ENDPAGE THEN LPRINT CHR$(12):ELSE 420
  45. 410 IF SHEETS=2 THEN COLOR 18:LOCATE 14:INPUT"Change the Paper - - - Then Hit <ENTER> ",X$:COLOR 7:LOCATE 14:PRINT STRING$(50," "):GOSUB 850
  46. 420 IF FLAG=1 THEN END
  47. 430 GOTO 290
  48. 440 IF PAGE=>STARTPAGE AND PAGE <=ENDPAGE THEN 450 ELSE 370
  49. 450 IF MID$(THELIN$,2,1)="%" THEN LPRINT TAB(INT(N*PFACTOR));:THISLIN$=CHR$(27)+CHR$(71)+CHR$(27) CHR$(69)+MID$(THELIN$,3,LEN(THELIN$)-2):ON NUMLIN GOTO 460,470:ELSE 500
  50. 460 LPRINT USING FORMAT$;LINUMBER;THISLIN$:GOTO 480
  51. 470 LPRINT USING FORMAT$;THISLIN$
  52. 480 LPRINT CHR$(27) CHR$(70) CHR$(27) CHR$(72);:IF X=2 THEN LPRINT CHR$(15);
  53. 490 GOTO 370
  54. 500 IF MID$(THELIN$,2,1)="@" THEN LPRINT TAB(INT(N*PFACTOR));:THISLIN$=CHR$(27)+CHR$(71)+CHR$(15)+CHR$(14) + MID$(THELIN$,3,LEN(THELIN$)-2) + CHR$(20):ON NUMLIN GOTO 510,520:ELSE 550
  55. 510 LPRINT USING FORMAT$;LINUMBER,THISLIN$:GOTO 530
  56. 520 LPRINT USING FORMAT$;THISLIN$
  57. 530 LPRINT CHR$(18) CHR$(27) CHR$(72);:IF X=2 THEN LPRINT CHR$(15);
  58. 540 GOTO 370
  59. 550 IF MID$(THELIN$,2,1)="#" THEN 560 ELSE 580
  60. 560 IF PAGE=>STARTPAGE AND PAGE<=ENDPAGE THEN FOR I=LINES+1 TO PAGLEN:LPRINT:NEXT I
  61. 570 LINUMBER=LINUMBER+1:GOTO 380
  62. 580 IF MID$(THELIN$,2,1)="*" THEN THELIN$=MID$(THELIN$,3,LEN(THELIN$)-2):GOTO 310:ELSE GOTO 310
  63. 590 INPUT"Do you want to reformat the file (Y/N)";Y$
  64. 600 IF LEFT$(Y$,1)="Y" OR LEFT$(Y$,1)="y" THEN 610 ELSE RETURN
  65. 610 PRINT:INPUT"How many characters do you want on each line";LINLEN
  66. 620 PRINT:INPUT"Enter the FILESPEC of the new file: ",FS$
  67. 630 OPEN "I", #1, FILE$:OPEN "O", #2, FS$:OLDLIN$=""
  68. 640 LINE INPUT #1, THELIN$:IF EOF(1) THEN 820
  69. 650 IF LEFT$(THELIN$,1)="\" THEN 690
  70. 660 IF THELIN$=" " THEN 690
  71. 670 IF THELIN$=CHR$(13) THEN 690
  72. 680 GOTO 710
  73. 690 IF OLDLIN$<>"" THEN NEWLIN$=OLDLIN$:OLDLIN$="":GOSUB 800
  74. 700 NEWLIN$=THELIN$:GOSUB 800:GOTO 640
  75. 710 IF OLDLIN$<>"" AND RIGHT$(OLDLIN$,1)<>" " THEN OLDLIN$=OLDLIN$+" "
  76. 720 NEWLIN$=OLDLIN$+THELIN$:OLDLIN$=""
  77. 730 IF LEN(NEWLIN$)<LINLEN THEN OLDLIN$=NEWLIN$:GOTO 640
  78. 740 IF LEN(NEWLIN$)=LINLEN THEN OLDLIN$="":GOSUB 800:GOTO 640
  79. 750 FOR INDEX=LINLEN TO 1 STEP -1
  80. 760 IF MID$(NEWLIN$,INDEX,1)=" " THEN OLDLIN$=MID$(NEWLIN$,INDEX+1,LEN(NEWLIN$)-INDEX) ELSE 790
  81. 770 NEWLIN$=MID$(NEWLIN$,1,INDEX):GOSUB 800
  82. 780 IF LEN(OLDLIN$)<LINLEN THEN GOTO 640 ELSE NEWLIN$=OLDLIN$:OLDLIN$="":GOTO 740
  83. 790 NEXT INDEX
  84. 800 PRINT #2, NEWLIN$:PRINT NEWLIN$
  85. 810 RETURN
  86. 820 GOSUB 800:CLOSE:FILE$=FS$
  87. 830 PRINT:INPUT"Do you want to print the new file now? (Y/N) ",X$
  88. 840 IF LEFT$(X$,1)="Y" OR LEFT$(X$,1)="y" THEN RETURN 140 ELSE END
  89. 850 IF X=1 THEN LPRINT CHR$(18) CHR$(20);:WIDTH "LPT1:",80:PFACTOR=.8250001
  90. 860 IF X=2 THEN LPRINT CHR$(15);:WIDTH "LPT1:",132:PFACTOR=.5
  91. 870 RETURN
  92. $(18) CHR$(20);:WIDTH "LPT1:",80:PFACTOR=.8250001
  93. 860 IF X=2 THEN LPRINT CHR$(15);:WIDTH "LPT1:",132